package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.TeachplanDTO;
import com.xuecheng.api.content.model.dto.TeachplanMediaDTO;
import com.xuecheng.api.content.model.vo.BindTeachplanMediaVO;
import com.xuecheng.api.content.model.vo.TeachplanVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;

/**
 * 课程计划信息管理
 *
 * @author lily
 * @date 2021/12/12
 */
@Api("课程计划信息管理")
public interface TeachplanApi {


    /**
     * 根据课程id查询课程计划的树形结构，即三级目录
     *
     * @param courseId 课程基础id值
     * @return com.xuecheng.api.content.model.dto.TeachplanDTO
     * @author Lily
     * @date 2021/12/12 19:56
     * @paramType [java.lang.Long]
     * @description
     */
    @ApiOperation("根据课程id查询课程计划的树形结构，即三级目录")
    @ApiImplicitParam(name = "courseId", value = "课程基础id值", required = true, dataType = "Long", paramType = "path", example = "1")
    TeachplanDTO queryTreeNodesByCourseId(Long courseId);


    /**
     * 创建或修改教学计划
     *
     * @param teachplanVO 课程计划VO
     * @return com.xuecheng.api.content.model.dto.TeachplanDTO
     * @author Lily
     * @date 2021/12/12 21:42
     * @paramType [com.xuecheng.api.content.model.vo.TeachplanVO]
     * @description
     */
    @ApiOperation(value = "新增或修改课程计划")
    @ApiImplicitParam(name = "teachplanVO", value = "课程计划VO", required = true, dataType = "TeachplanVO", paramType = "body")
    TeachplanDTO createOrModifyTeachPlan(TeachplanVO teachplanVO);


    /**
     * 删除教学计划
     *
     * @param teachPlanId 教学计划id
     * @author Lily
     * @date 2021/12/13 10:32
     * @paramType [java.lang.Long]
     * @description
     */
    @ApiOperation("删除教学计划")
    @ApiImplicitParam(name = "teachPlanId", value = "课程计划Id值", required = true, dataType = "Long", paramType = "path", example = "1")
    void removeTeachPlan(Long teachPlanId);


    /**
    * @author Lily
    * @date 2021/12/20 23:31
    * @paramType [com.xuecheng.api.content.model.vo.BindTeachplanMediaVO]
    * @param vo
    * @return com.xuecheng.api.content.model.dto.TeachplanMediaDTO
    * @description 课程计划绑定媒资信息
    */
    @ApiOperation("课程计划绑定媒资信息")
    @ApiImplicitParam(name = "vo", value = "前端传递参数vo", required = true, dataType = "BindTeachplanMediaVO", paramType = "body")
    TeachplanMediaDTO associateMedia(BindTeachplanMediaVO vo);
}
